%
O6400(ENGRAVES 4 DIGIT SERIAL NUMBER)
(FROM LEFT TO RIGHT-#540 #541 #542 #543) 
 
IF[#540GT9]GOTO25(ALARM IF DIGIT > 9)
IF[#541GT9]GOTO25(ALARM IF DIGIT > 9)
IF[#542GT9]GOTO25(ALARM IF DIGIT > 9)
IF[#543GT9]GOTO25(ALARM IF DIGIT > 9)
 
G65P6000A#540(ENGRAVE DIGIT 1) 
G65P6000A#541(ENGRAVE DIGIT 2) 
G65P6000A#542(ENGRAVE DIGIT 3) 
G65P6000A#543(ENGRAVE DIGIT 4) 
 
G0G54G90Z.5
 
IF[#545EQ2]GOTO20(IF PART 2/2) 
IF[#545EQ1]GOTO23(IF PART 1/2) 
 
GOTO26(ALARM IF NOT PART 1 OR 2) 
 
N20(ITTERATE SN) 
IF[#543LT9]GOTO21(IF 1'S PLACE < 9)
 
IF[#542LT9]GOTO28(IF 10'S PLACE < 9) 
 
IF[#541LT9]GOTO29(IF 100'S PLACE < 9)
 
IF[#540EQ9]GOTO27(ALARM SN 9999) 
 
#540=#540+1(COUNT UP 1000'S PLACE) 
#541=0(SET 100'S PLACE TO 0) 
#542=0(SET 10'S PLACE TO 0)
#543=0(SET 1'S PLACE TO 0) 
GOTO22(SET PART 1) 
 
N29
#541=#541+1(COUNT UP 100's PLACE)
#542=0(SET 10's PLACE TO 0)
#543=0(SET 1's PLACE 0)
GOTO22(SET PART 1) 
 
N28
#542=#542+1(COUNT UP 10'S PLACE) 
#543=0(SET 1'S PLACE TO 0) 
GOTO22(SET PART 1) 
 
 
N21
#543=#543+1(+0001) 
GOTO22 
 
N22
#545=#545-1(SET PART 1)
GOTO99(END)
 
N23
#545=#545+1(SET PART 2)
 
N24(SKIP SN++) 
GOTO99(END)
 
(ALARMS) 
N25
#3000=60(SN DIGIT BECAME DIGITS) 
N26
#3000=61(2 PART SN TRACKING OFF COUNT) 
N27
#3000=62(MAX SN REACHED) 
 
N99
M99
%